package com.ssy.lingxi.member.merchant.service.feign;

import com.ssy.lingxi.report.api.vo.request.OperateNoticeVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 调用报表服务Feign接口
 * @author 万宁
 * @version 2.0.0
 * @date 2020-11-20
 */
public interface IReportFeignService {
    /**
     * 通知报表服务统计会员审核步骤数据
     * @param relationId 会员关系Id
     * @param memberId   上级会员Id
     * @param roleId     上级会员角色Id
     * @param lastInnerStatus  上一次的内部状态，如为0或Null表示不减少
     * @param currentInnerStatus 上一次的内部状态，如为0或Null表示不增加
     * @param processType 流程类型
     */
    void reportMemberValidate(Long relationId, Long memberId, Long roleId, Integer lastInnerStatus, Integer currentInnerStatus, Integer processType);

    /**
     * 通知报表服务统计平台会员审核步骤数据
     * @param relationId 平台会员关系Id
     * @param memberId   上级会员Id
     * @param roleId     上级会员角色Id
     * @param lastPlatformInnerStatus  上一次的内部状态，如为0或Null表示不减少
     * @param currentPlatformInnerStatus 上一次的内部状态，如为0或Null表示不增加
     */
    void reportPlatformMemberValidate(Long relationId, Long memberId, Long roleId, Integer lastPlatformInnerStatus, Integer currentPlatformInnerStatus);

    /**
     * 首页统计增加请求
     */
    OperateNoticeVO buildIncreaseReportVO(Integer dataSource, Integer operateType, Long memberId, Long roleId);

    /**
     * 首页统计增加请求(数量)
     */
    OperateNoticeVO buildIncreaseReportVO(Integer dataSource, Integer operateType, Long memberId, Long roleId, Integer count);

    /**
     * 首页统计减少请求
     */
    OperateNoticeVO buildReduceReportVO(Integer dataSource, Integer operateType, Long memberId, Long roleId);

    /**
     * 首页统计减少请求(数量)
     */
    OperateNoticeVO buildReduceReportVO(Integer dataSource, Integer operateType, Long memberId, Long roleId, Integer count);

    /**
     * 首页统计减少和增加
     */
    List<OperateNoticeVO> buildReduceAndIncreaseVOList(Integer dataSource, Integer operateType, Long memberId, Long roleId,
                                                       Integer subDataSource, Integer subOperateType, Long subMemberId, Long subRoleId);

    /**
     * 首页统计增加
     */
    void executeIncreaseReport(Integer dataSource, Integer operateType, Long memberId, Long roleId);

    /**
     * 首页统计增加(数量)
     */
    void executeIncreaseReport(Integer dataSource, Integer operateType, Long memberId, Long roleId, Integer count);

    /**
     * 首页统计减少
     */
    void executeReduceReport(Integer dataSource, Integer operateType, Long memberId, Long roleId);

    /**
     * 首页统计减少(数量)
     */
    void executeReduceReport(Integer dataSource, Integer operateType, Long memberId, Long roleId, Integer count);

    /**
     * 首页统计一方减少一方增加
     */
    void executeReduceAndIncreaseReport(Integer dataSource, Integer operateType, Long memberId, Long roleId,
                                        Integer subDataSource, Integer subOperateType, Long subMemberId, Long subRoleId);

    /**
     * 首页统计(批量)
     */
    void executeBatchReport(List<OperateNoticeVO> operateNoticeVOList);

    /**
     * 添加下级会员申请统计
     */
    void addSubMember(Long memberId , Long roleId, LocalDateTime dateTime);
}
